#pragma once

#include "notransformactor.h"
#include <QVector>
#include <QStringList>

namespace VrDataCore
{
	class CamerasSetting;

	class VRDATACORE_EXPORT DefaultStartCameraInfoActor:public NoTransformActor
	{
	public:
		DefaultStartCameraInfoActor();
	protected:
		~DefaultStartCameraInfoActor();
	public:
		virtual void buildPropertyMap();
		void setRoamStartInfo(QList<osg::Vec3> data);
		QList<osg::Vec3> getRoamStartInfo();
		void setDefaultStartInfo(QList<osg::Vec3> data);
		QList<osg::Vec3> getDefaultStartInfo();
	private:
		QList<osg::Vec3>							_roamAttitudeList;
		QList<osg::Vec3>							_defaultAttitudeList;
	};

	class VRDATACORE_EXPORT WithCamerasSetting:public NoTransformActor
	{
	public:
		WithCamerasSetting();
	protected:
		~WithCamerasSetting();
	public:
		virtual void buildPropertyMap();
		void setCameraSetting(QStringList data);
		QStringList getCameraSetting();
		void addCameraSetting(CoreBase::ActorBase* a);
		void removeCameraSetting(CoreBase::ActorBase* a);
		QList<CoreBase::ActorBase*> getCameraSettingList();
		QList<osg::Vec3> getSetting(const QString& name);
		virtual void onMapLoadEnd(CoreBase::Map*);
		void setHostActor(QString hostactorid);
		QString getHostActor();
	private:
		QStringList									_idList;
		QList<CoreBase::ActorBase*>						_settingList;
		QString										_hostActorId;
	};

	class VRDATACORE_EXPORT CamerasSetting:public NoTransformActor
	{
	public:
		CamerasSetting();
	protected:
		~CamerasSetting();
	public:
		virtual void buildPropertyMap();
		void setSetting(QList<osg::Vec3> data);
		QList<osg::Vec3> getSetting();
		void setWithIcon(QString icon);
		QString getWithIcon();
		void setWithCameraNearFarRatio(double nfr);
		double getWithCameraNearFarRatio();
	private:
		QList<osg::Vec3>						_setting;
		QString									_icon;
		double									_nfr;
	};
}